From 649c836747eaf161f89c549f5fdf307c4f692bb4 Mon Sep 17 00:00:00 2001 From: "cl349@arcadians.cl.cam.ac.uk" Date: Fri, 19 Nov 2004 11:29:58 +0000 Subject: [PATCH] bitkeeper revision 1.1159.179.6 (419dd936eFhwYzXtzmEE2hYiNXjHZQ) Pass irq number in regs->orig_eax like the regular i386 code. --- linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/irq.c | 6 ++++-- linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/evtchn.c | 8 +++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/irq.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/irq.c index abac46a91c..3d4e563127 100644 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/irq.c +++ b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/irq.c @@ -45,8 +45,10 @@ static union irq_ctx *softirq_ctx[NR_CPUS]; * SMP cross-CPU interrupts have their own specific * handlers). */ -unsigned int do_IRQ(int irq, struct pt_regs *regs) -{ +fastcall unsigned int do_IRQ(struct pt_regs *regs) +{ + /* high bits used in ret_from_ code */ + int irq = regs->orig_eax & 0xff; #ifdef CONFIG_4KSTACKS union irq_ctx *curctx, *irqctx; u32 *isp; diff --git a/linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/evtchn.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/evtchn.c index c3d912d1df..8b548430c6 100644 --- a/linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/evtchn.c +++ b/linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/evtchn.c @@ -68,7 +68,13 @@ static int irq_bindcount[NR_IRQS]; static unsigned long pirq_needs_unmask_notify[NR_PIRQS/sizeof(unsigned long)]; /* Upcall to generic IRQ layer. */ -extern unsigned int do_IRQ(int irq, struct pt_regs *regs); +#ifdef CONFIG_X86 +extern fastcall unsigned int do_IRQ(struct pt_regs *regs); +#define do_IRQ(irq, regs) do { \ + (regs)->orig_eax = (irq); \ + do_IRQ((regs)); \ +} while (0) +#endif #define VALID_EVTCHN(_chn) ((_chn) != -1) -- 2.30.2